package com.bookstore.back.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 图书数据传输对象
 * 
 * @author 程序猿_Ti
 * @since 2025-07-19
 */
@Data
public class BookDTO {

    /**
     * 图书标题
     */
    @NotBlank(message = "图书标题不能为空")
    private String title;

    /**
     * 作者
     */
    private String author;

    /**
     * 出版社
     */
    private String publisher;

    /**
     * ISBN编号
     */
    private String isbn;

    /**
     * 出版日期
     */
    private LocalDate publishDate;

    /**
     * 售价
     */
    @NotNull(message = "售价不能为空")
    @DecimalMin(value = "0.01", message = "售价必须大于0")
    private BigDecimal price;

    /**
     * 原价
     */
    private BigDecimal originalPrice;

    /**
     * 主分类ID
     */
    @NotNull(message = "分类不能为空")
    private Integer categoryId;

    /**
     * 页数
     */
    @Min(value = 1, message = "页数必须大于0")
    private Integer pages;

    /**
     * 装帧方式
     */
    private String binding;

    /**
     * 封面图URL
     */
    private String cover;

    /**
     * 图书简介
     */
    private String description;

    /**
     * 作者简介
     */
    private String authorBio;

    /**
     * 库存
     */
    @Min(value = 0, message = "库存不能为负数")
    private Integer stock;

    /**
     * 状态：0-下架 1-上架
     */
    private Integer status;

}
